<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 箭头函数需要注意的问题:
    // 1. 箭头函数中没有arguments,不能使用arguments, 如果要用，可以用 rest 参数代替。
    // 2. 箭头函数没有自己的this指向
    // 3. 箭头函数不能作为构造函数 (!!)
    // 4. 箭头函数不能作为 Generator函数

    // 普通函数 -> 有arguments => 函数调用时用于存放实际参数的集合
    // function add(a, b) {
    //     console.log(arguments);
    //     return a + b;
    // }
    // add(1, 4, 7, 2, 5, 8, 3, 6, 9);



    // 箭头函数中没有arguments
    // var fn = () => {
    //     console.log(arguments);  // 报错: arguments is not defined
    // }
    // fn(1, 4, 7, 2, 5, 8, 3, 6, 9);


    // Rest参数 (合并剩余参数   -> ... 扩展运算符的逆应用)
    // 形参实参一一对应!!!
    // a => 1
    // b => 4
    // ... list => 7, 2, 5, 8, 3, 6, 9   反推: list = [ 7, 2, 5, 8, 3, 6, 9]
    // var fn = (a, b, ...list) => {
    //     console.log(a, b, list);
    // }
    // fn(1, 4, 7, 2, 5, 8, 3, 6, 9);


    // ...list  => 1, 4, 7, 2, 5, 8, 3, 6, 9
    // var fn = (...list) => {
    //     console.log(list);  // [1, 4, 7, 2, 5, 8, 3, 6, 9]
    // }
    // fn(1, 4, 7, 2, 5, 8, 3, 6, 9);


    // 报错: Rest parameter must be last formal parameter : Rest参数必须是最后一个形参
    // var fn = (a, ...list, b) => {
    //     console.log(list);  // [1, 4, 7, 2, 5, 8, 3, 6, 9]
    // }
    // fn(1, 4, 7, 2, 5, 8, 3, 6, 9);





</script>

</html>